A typical computer displays a character or other graphical object by transmitting a conventional bitmap for the graphical object to a display device. A conventional bitmap contains a single bit value for each pixel in the video display that is to be used in drawing the graphical object. Usually, if the bit contains a one, the pixel is set to a foreground color. If the bit is a zero, and the bitmap is being displayed in an opaque mode, the pixel is set to a background color. If the bit is a zero, and the bitmap is being displayed in a transparent mode, the color of the pixel is not changed.
FIG. 1A is a diagram that shows a conventional character bitmap for the character "A". The bitmap contains pixel values for 72 pixels required to display the character "A". A pixel is referenced by its column letter (A-H) and its row number (1-9). Pixel values H8 and H9 each contain a one which will cause the corresponding pixels to be set to a foreground color when the bitmap is displayed. Pixel value G9 contains a zero which will cause the corresponding pixel to be set to a background color when the bitmap is being displayed in opaque mode or not changed when the bitmap is displayed in transparent mode.
Bitmaps are more easily understood when presented as a display grid. A display grid is a representation of a bitmap in which each pixel value is portrayed by the shade of a block. A block is referenced by its column letter (A-H) and its row number (1-9). FIG. 1B is a display grid for the bitmap shown in FIG. 1A. It contains blocks like blocks H8 and H9 that are shaded because their corresponding pixel values are 1. The display grid also contains blocks like block G9 (i.e., column G, row 9) that are unshaded because their pixel values are zero.
A computer can generate a conventional bitmap from a character outline, which is comprised of straight lines and curves that form the shape of the outline of the character. Each straight line or curve is stored as a mathematical representation in an arbitrary coordinate system. For example, a straight line may be represented by the coordinates of its end points, while curves may be represented as an arc of an ellipse. FIGS. 1C-D are diagrams that show a character outline for the character "A". This particular character outline has straight lines 100, 101, 102, 103, 104, 105, 106, 107, 108 and 109 and no curves. The straight lines define three members 110, 111 and 112--regions bounded by the straight lines that are roughly rectangular. The conventional character bitmap of FIG. 1A can be generated from the character outline of FIG. 1C by first setting all of the bits of the bitmap to zero, then changing to one the bit of each pixel whose center falls inside the character outline. For example, the center 120 of pixel 121 falls within the character outline and thus pixel value H9 is set to 1. On the other hand, the center 122 of pixel 123 falls outside the character outline and therefore pixel value G9 is set to zero.
As can be noted from FIG. 1B, the edges of conventional character bitmaps often appear jagged. FIG. 1E is a superimposition of a character outline over the display grid. As can be seen from FIG. 1E, the jaggedness occurs because comers of some of the pixels that are set to one protrude well beyond the character outline. In the figure this is particularly true of pixels B8, C6, C8, D3, E1, F3, G6, GS, and H8. This effect is particularly pronounced for characters having diagonal members (such as italic characters), as well as for characters that are displayed using relatively few pixels. In order to address this jaggedness, a few computer systems use antialiased character bitmaps. An antialiased character bitmap, like conventional bitmaps, contains a value for each pixel in the video display that is to be used in drawing the graphical object that it represents. Antialiased characters are sometimes stored in a group, collectively called a font. Fonts can contain characters and other font elements, such as symbols. Unlike a conventional bitmap, an antialiased character bitmap represents the graphical object in more than one level of illuminative intensity. This allows pixels that extend outside of the character outline to be dimmed to a lower level of illuminative intensity, so that the fact that they extend outside of the character outline becomes less noticeable. Typically, a small number of illuminative intensities, such as four, is sufficient.
FIG. 2A is a diagram that shows a display grid for an antialiased character bitmap for the character "A". Displaying antialiased characters requires a display device capable of varying the illuminative intensity of each pixel. A pixel is referenced by its column letter (A-H), its row number (1-9) and a prime sign ('). Because they extend well beyond the character outline, pixels B8', C6', C8', D3', E1', F3', G6', G8', and H8' have been dimmed to a low level of illuminative intensity. This is shown in FIG. 2A by the low density hashing of these blocks. Because pixels B9', D4', D5', F4', F5', and H9' extend beyond the character outline to a lesser extent, they have been dimmed to a medium level of illuminative intensity. This is shown in the figure by medium density hashing of these blocks. Because pixels C7', D6', E2', E3', E6', F6', and G7' are substantially completely within the character outline, they remain at full illuminative intensity. This is shown in the figure by high density shading of these blocks.
Antialiased characters also require bitmaps that reflect different levels of illuminative intensity of each pixel other than "on" or "off". These bitmaps are known as multiple bit per pixel bitmaps, and use more that one bit to store the level of illuminative intensity of each pixel. In many cases, two bits per pixel are used. FIG. 2B is a multiple bit per pixel bitmap for the antialiased character shown in the display grid of FIG. 2A. The multiple bit per pixel bitmap stores a multiple bit pixel value (shown in base 10 in FIG. 2B) for each pixel A1'-H9'. Because pixel G9' falls outside the character outline, its pixel value is zero. Because pixel H8' extends well beyond the character outline, its pixel value is 1. Because pixel H9' extends beyond the character outline to a lesser extent, its pixel value is 2.
Antialiased characters can be very effective to reduce the jagged appearance of displayed text. However, displaying antialiased character bitmaps requires prohibitive levels of processing time, storage, and data traffic between the computer and the display device. Most display devices capable of displaying pixels at the small handful of different illuminative intensities required for antialiased characters are further capable of displaying pixels at thousands of different colors, each comprising a hue and an illuminative intensity. The colors that a display device is capable of displaying are collectively called the display device's color domain. As the size of a display device color domain grows, the amount of memory required to represent the color of one pixel increases because a sufficient number of bits must be allocated for encoding the illuminative intensity so as to distinguish among the available illuminative intensities. While the four antialiased character "A" of FIG. 1C requires only 2 bits per pixel to represent in a color domain of four illuminative intensity levels, the character requires 24 bits per pixel to represent in the color domain of 16,777,216 colors that is typical for modem display devices.
If a 2 bit per pixel antialiased character is to be displayed in a 16,777,216 color domain, the computer must translate the character's 2 bit per pixel representation into a 24 bit per pixel representation. This translation requires additional processing resources, and the 24 bit per pixel representation occupies 12 times as much space as the 2 bit per pixel representation. When the computer transmits the translated character to the display device, it must transmit 24 bits for each pixel of the character. Frequently used characters are often cached in memory associated with the display device. Because a limited amount of memory is available for this purpose, it must be used as efficiently as possible. If, at any point, the character is cached in the computer or the display device, 24 bits per pixel of cache memory must be devoted to the character.
While antialiased characters appear much less jagged than conventional characters, the extra memory consumption and transmission time that they require have inhibited their general use. Similar difficulties occur with the display of any image that uses a relatively small number of colors or shades on a monitor having a large color domain. For instance, color icons often use a small set of colors. FIG. 3 is a color diagram of a color icon. Color icon 300 is composed of a black color 301, a gray color 302, a brown color 303, a yellow color 304 and a white color 305. In any such case, the computer must translate each of the small number of colors into one of a much larger number of colors, whose representations consume larger amounts of memory. The larger representations must then be transmitted to the display device, and any image cache must store the larger representation.